// pages/school-select/school-select.js
const app = getApp()

Page({
  data: {
    schools: [],
    selectedSchoolId: null,
    loading: false,
    isSubmitting: false
  },

  onLoad(options) {
    // 检查是否已登录
    if (!app.globalData.token) {
      wx.reLaunch({
        url: '/pages/login/login'
      })
      return
    }

    // 如果已经有学校ID，询问是否需要修改
    const userInfo = app.globalData.userInfo
    if (userInfo && userInfo.schoolId) {
      wx.showModal({
        title: '提示',
        content: '您已经选择了学校，确定要重新选择吗？',
        success: (res) => {
          if (res.confirm) {
            this.loadSchools()
          } else {
            wx.navigateBack({
              fail: () => {
                wx.reLaunch({
                  url: '/pages/index/index'
                })
              }
            })
          }
        }
      })
    } else {
      // 加载学校列表
      this.loadSchools()
    }
  },

  // 加载学校列表
  async loadSchools() {
    this.setData({ loading: true })
    
    try {
      const result = await app.utils.request({
        url: '/schools/list',
        method: 'GET',
        data: {
          page: 1,
          size: 1000,
          status: 1 // 只获取启用的学校
        }
      })

      if (result.code === 200) {
        const schools = result.data.records || result.data || []
        this.setData({
          schools: schools,
          loading: false
        })

        if (schools.length === 0) {
          wx.showModal({
            title: '提示',
            content: '暂无可选学校，请联系管理员',
            showCancel: false,
            success: () => {
              // 返回登录页
              wx.reLaunch({
                url: '/pages/login/login'
              })
            }
          })
        }
      } else {
        throw new Error(result.message || '获取学校列表失败')
      }
    } catch (error) {
      console.error('加载学校列表失败:', error)
      this.setData({ loading: false })
      
      wx.showModal({
        title: '加载失败',
        content: '获取学校列表失败，请稍后重试',
        showCancel: true,
        confirmText: '重试',
        cancelText: '退出',
        success: (res) => {
          if (res.confirm) {
            this.loadSchools()
          } else {
            wx.reLaunch({
              url: '/pages/login/login'
            })
          }
        }
      })
    }
  },

  // 选择学校
  onSelectSchool(e) {
    const schoolId = e.currentTarget.dataset.id
    this.setData({
      selectedSchoolId: schoolId
    })
  },

  // 确认选择
  async onConfirm() {
    if (!this.data.selectedSchoolId) {
      wx.showToast({
        title: '请选择学校',
        icon: 'none'
      })
      return
    }

    if (this.data.isSubmitting) {
      return
    }

    this.setData({ isSubmitting: true })
    app.utils.showLoading('提交中...')

    try {
      const result = await app.utils.request({
        url: '/auth/user/update-school',
        method: 'POST',
        data: {
          schoolId: this.data.selectedSchoolId
        }
      })

      if (result.code === 200) {
        // 更新本地用户信息
        const userInfo = app.globalData.userInfo
        if (userInfo) {
          userInfo.schoolId = this.data.selectedSchoolId
          // 找到选中的学校信息
          const selectedSchool = this.data.schools.find(s => s.id === this.data.selectedSchoolId)
          if (selectedSchool) {
            userInfo.schoolName = selectedSchool.schoolName
          }
          app.utils.saveUserInfo(userInfo, app.globalData.token)
        }

        app.utils.hideLoading()
        app.utils.showSuccess('学校设置成功')
        
        setTimeout(() => {
          // 跳转到首页
          wx.reLaunch({
            url: '/pages/index/index'
          })
        }, 1500)
      } else {
        throw new Error(result.message || '设置学校失败')
      }
    } catch (error) {
      console.error('设置学校失败:', error)
      app.utils.hideLoading()
      app.utils.showError(error.message || '设置学校失败，请重试')
      this.setData({ isSubmitting: false })
    }
  },

  // 禁止返回（必须选择学校）
  onBackPress() {
    wx.showModal({
      title: '提示',
      content: '请先选择您的学校，才能使用校园帮手',
      showCancel: false
    })
    return true
  }
})

